//////////////////////////////////////////////////////////////////////////////////
//	File Name:	ObjectManager.h
//	Author	 :	Yuri Oyoko
//	Purpose	 :	The object manager handles the rendering and updating of all
//				objects currently in the game
//////////////////////////////////////////////////////////////////////////////////
#pragma once

//Includes
#include <vector>
using std::vector;

class BaseObject;

class ObjectManager
{
private:
	//A list containing all objects which will be managed by the
	//object manager
	vector<BaseObject*> ObjectList;
	//A pointer to the instance of the object manager
	static ObjectManager* Instance;
public:
	ObjectManager();
	~ObjectManager();
	
	void UpdateObjects(float ElapsedTime);
	void RenderObjects();
	void CheckObjectCollisions();

	void AddObject(BaseObject* theObject);
	void RemoveObject(BaseObject* theObejct);
	void RemoveAllObjects();
	
	static ObjectManager* GetInstance();
	static void DeleteInstance();
};